package com.atguigu.gulimall.product;

import com.atguigu.gmall.common.config.minio.annotation.EnableMinio;
import com.atguigu.gmall.common.config.pool.annotation.EnableAppThreadPool;
import com.atguigu.gmall.common.config.swagger.annotation.EnableRestAPIDocs;
import com.atguigu.gmall.common.exception.EnableAutoExceptionHandle;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.transaction.annotation.EnableTransactionManagement;


/**
 * 主类
 * 1、导入mybatis-plus；要求必须配置数据库
 * 2、配置数据库
 * 3、配置nacos；
 *
 * SpringBoot启动扫描主程序所在的包及其子包下的所有组件
 * 主程序： com.atguigu.gmall.product
 * 配置类:  com.atguigu.gmall.common.config.minio
 *
 *
 * redis的自动配置 RedisAutoConfiguration； xxxTemplate；操作第三方的模板工具类
 *  1）、RedisTemplate<Object, Object>： redis中的数据都是k-v；
 *  2）、StringRedisTemplate：    k-v都是字符串；
 */
//@SpringBootApplication

//@EnableCircuitBreaker //开启服务熔断
//@EnableDiscoveryClient  //开启服务发现
//@SpringBootApplication

//@Import({MinioAutoConfiguration.class,
//         MinioProperties.class})

@MapperScan("com.atguigu.gulimall.product.mapper")
@SpringCloudApplication  //三合一
@EnableRestAPIDocs //自定义注解启动swagger
@EnableMinio
@EnableTransactionManagement
@EnableAutoExceptionHandle
@EnableAppThreadPool//自定义启动线程池
@EnableFeignClients(
        basePackages = "com.atguigu.gulimall.feign.search"
)
public class ProductMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductMainApplication.class, args);
    }
}
